{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## LASSO"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "x = np.random.uniform(-3.0, 3.0, size=100)\n",
    "X = x.reshape(-1, 1)\n",
    "y = 0.5 * x + 3 + np.random.normal(0, 1, size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10edded68>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "np.random.seed(666)\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "def PolynomialRegression(degree):\n",
    "    return Pipeline([\n",
    "        (\"poly\", PolynomialFeatures(degree=degree)),\n",
    "        (\"std_scaler\", StandardScaler()),\n",
    "        (\"lin_reg\", LinearRegression())\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "167.94010867293571"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "poly_reg = PolynomialRegression(degree=20)\n",
    "poly_reg.fit(X_train, y_train)\n",
    "\n",
    "y_predict = poly_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x114688cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_model(model):\n",
    "    X_plot = np.linspace(-3, 3, 100).reshape(100, 1)\n",
    "    y_plot = model.predict(X_plot)\n",
    "\n",
    "    plt.scatter(x, y)\n",
    "    plt.plot(X_plot[:,0], y_plot, color='r')\n",
    "    plt.axis([-3, 3, 0, 6])\n",
    "    plt.show()\n",
    "\n",
    "plot_model(poly_reg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.linear_model import Lasso\n",
    "\n",
    "def LassoRegression(degree, alpha):\n",
    "    return Pipeline([\n",
    "        (\"poly\", PolynomialFeatures(degree=degree)),\n",
    "        (\"std_scaler\", StandardScaler()),\n",
    "        (\"lasso_reg\", Lasso(alpha=alpha))\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.1496080843259966"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lasso1_reg = LassoRegression(20, 0.01)\n",
    "lasso1_reg.fit(X_train, y_train)\n",
    "\n",
    "y1_predict = lasso1_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y1_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1146887f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(lasso1_reg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.1213911351818648"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lasso2_reg = LassoRegression(20, 0.1)\n",
    "lasso2_reg.fit(X_train, y_train)\n",
    "\n",
    "y2_predict = lasso2_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y2_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x114955550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(lasso2_reg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.8408939659515595"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lasso3_reg = LassoRegression(20, 1)\n",
    "lasso3_reg.fit(X_train, y_train)\n",
    "\n",
    "y3_predict = lasso3_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y3_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAD8CAYAAABXe05zAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGFlJREFUeJzt3X2MXFd5x/Hf482GbEzwCrGlyRKLVEVOES82GaVURhWY\nQtKAIKWtKKJVq1ay+IM2oBJqiloEFcXIEi+q+AOr0IJIKYi8qGooBuQAJWoCu7GBENsVohSyQGPa\nLiTYhbX99I/dNev1zNw7M/fc83K/HymKd/buzpmduc895znPOdfcXQCAfGyJ3QAAwGgI3ACQGQI3\nAGSGwA0AmSFwA0BmCNwAkJlagdvMZs3sE2Z23MyOmdmvhG4YAKC/S2oe915Jn3L33zKzSyVdHrBN\nAIAhrGoBjpltk3RU0i84q3UAILo6Pe5rJJ2U9Hdm9mxJi5JucfcfbzzIzPZK2itJW7duve7aa69t\nuq0AMNDyqRUtLZ/WuQ39yy1mmp+d0ezl0xFbVs/i4uIP3H2uzrF1etw9SfdJ2u3u95vZeyX9yN3/\nYtDP9Ho9X1hYGKXNADCR3fsPa2n59EWPz8/O6N59eyK0aDRmtujuvTrH1pmcfFjSw+5+/9rXn5D0\nnHEbBwAhfLdP0B72eM4qA7e7f1/Sd8xsx9pDL5T0UNBWAcCIrpqdGenxnNWt4/5jSbeZ2Vcl7ZT0\n1+GaBACju/WGHZqZnrrgsZnpKd16w44BP5GvWuWA7n5UUq3cCwDEcPOueUnSgUMn9N3l07pqdka3\n3rDj/OMlqVvHDQDJu3nXfJGBejOWvANAZgjcAJAZAjcAZIbADQCZIXADQGYI3ACQGQI3AGSGOm6g\n4+46stSJRSslIXADHXbXkSW96Y6v6fTKWUnS0vJpvemOr0kSwTthpEqADjtw6MT5oL3u9MpZHTh0\nIlKLUAeBG+iwLm2FWhICN9BhXdoKtSQEbqDDurQVakmYnAQ6rEtboZaEwA10XFe2Qi0JqRIAyAyB\nGwAyQ+AGgMyQ4waAFjWxxQCBG4iA/UG6adgWA6MgcAMtY3+Q7mpqiwFy3EDL2B+ku5raYoAeN9Ay\n9geJJ3aK6qrZGS31eZ+vmp3Rt0b4PfS4gZaxP0gc6ymqpeXTcv0sRXXXkaXW2tDUFgMEbqBl7A8S\nRwopqpt3zesdr3im5mdnZJLmZ2f0jlc8k6oSIHXsDxJHKimqJrYYqBW4zexbkh6VdFbSGXfvTfSs\nQMexP0j7huWXczNKquQF7r6ToA0gR1UpqruOLGn3/sO6Zt/d2r3/cKu571GRKgHQCcNSVLnV1tcN\n3C7ps2Z2VtL73f1gwDYBQBCDUlTDJi5zDtzPc/clM/s5SZ8xs+Pu/oWNB5jZXkl7JWn79u0NNxMA\nwkll4rKuWjlud19a+/8jku6UdH2fYw66e8/de3Nzc822EgACyq22vjJwm9lWM7ti/d+SXizpwdAN\nAxBXTpN1k8qttr5OquTJku40s/Xj/8HdPxW0VQCiym2yblK51dabuzf+S3u9ni8sLDT+ewG0Y/f+\nw31rnudnZ3Tvvj2ttSP23iJtMrPFuuXWlAMCuEgKk3Vd6/WPgr1KAFwkhcm6FPYWmUTIOQICN4CL\npDBZl0Kvf1yhdyIkcAO4SFO72E0ihV7/uEKPFshxA+gr9kZYt96w44Ict5R2id5GoUcL9LgBJCmF\nXv+4Qo8W6HEDSFbsXv+4Qo8WCNwA0LDQC3oI3AAQQMjRAjluAMgMgRsAMkPgBoDMkOMGhujSJkfI\nB4EbGIBNjtBPChdzUiXAALlvcoTmhd6DpC4CNzBAzpscIYxULuakSoABrpqd6XszgRw2OcLk+qVE\nUrmY0+MGBkhha1PEMSglsm1muu/xbV/MCdzAADlvcoTJDEqJmOmii7lpNbC3eUPlolIlMWZ7U5hh\nRji5bnKUq1TOp0Gpj+VTK3r3K3fqwKETWlo+LZO0ftfeNquOiulxx5jtTWWGGShBSufTsG1Zb941\nr3v37dH87Iw232q9rYnKYgJ3jNneVGaYgRKkdD7Vmd+IOVFZTOCO8UdMZYYZKEFK51Od+Y2Yt1Yr\nJscdo3SLcjGgOamdT1XzGzFvrVZMjztG6RblYkBzcjufYlYdmfvm9Prker2eLywsNP57q1BVAuSj\n37kjhbtrTOrMbNHde7WOLSlwA8jD5g28pNXedY518k113kYJ3MXkuDE6RgsYJuTnY1gFSU6fwVg7\nSNbOcZvZlJkdMbN/DtYatCalmlmkJ/TnI6UKkknEKmEcZXLyFknHQjUE7UqpZhbpCf35iFlK16RY\nF6BagdvMniLpJZL+Nmhr0JpSejwII/TnI7cKkkFiXYDq9rjfI+mNks4NOsDM9prZgpktnDx5spHG\nIZxSejwII/Tno5QNvGJdgCoDt5m9VNIj7r447Dh3P+juPXfvzc3NNdZAhFFKjwdhtPH5WN/z492v\n3ClJev3Hjra6w14TYl2A6lSV7Jb0MjO7SdJlkp5gZh9x998N2jIEtf7Boqqku4ZVjbT1+Sjhvp4x\ndpAcqY7bzJ4v6Q3u/tJhx1HHnSbK/9LW5vuTSh317v2H+y5zn5+d0b379rTWjhSMUsddzJJ3DEf5\nX9rafn9SqSpiknw8IwVud/9cVW8baUrlREV/bb8/dQPmXUeWtHv/YV2z7+4g+WcmycdDj7sj6Nmk\nre33p07AbGMUwCT5eAjcHUHPZjKl9TzrBMw2RgGllAW2jb1KOiLm3sG5a6Pyoe33p07VSFujgBhV\nGblP1BO4O4Lyv/G1sSFSjPenKmCmdmODppRQgkjg7hDuWD6eUD3Pfr2+lErgSh2llbAzIYEbqBCi\n55lDr6/UUVoJE/UEbqBCiJ5nLr2+HEdpVfnrElJAVJUAFUJUPpTQ60tRnRLGEkoQ6XEDNTTd8yyh\n17cupQqNOiOZElJABG4gglIm/lLL1dcdyeSYAtqIVAkQQSkLT9pYpDPK4qeuLDSjxw1EknuvT6rX\nw50klTJqj76UkUwVAjeAsVXl6idNpYxafZNS/jpk7p/ADWBsVT3cScsex6m+SWEkEzr3T44bKFjo\nzbGqcvWTlj3mmrMOnfunx43spVSOlpK2Kj6G9XAnLXvMNWcduk6fHjeyxp19Bkvh5hmTLnbJtfom\n9EiBHjeylsvS8RhSWJ3ZxGRhCjnrUYUeKRC4O6yEFEMKwSlVMVdnlvDZmkTo6hYCd0eltuJtXCUt\nHW9arPxwKZ+tSYUcKZDj7qgU8p9NKGHDoFBi5YdL+WyljB53R5WSYkhpwUWKYuSHS/lspSzZwN31\nHFloJaUYcpy8Ktm2mWktn1656PEcP1upSjJwkyMLL7X62M0X6hdcO6d7jp8s4sKdciek6bbddWRJ\nP/7pmYsen95ipK8alGTgpsQrvJRSDP0u1B+579vnv5/zhTvlTkiIth04dEIrZ/2ixx9/2SXRX29J\nkgzc5MguFKrHlkqKod+FerNcL9wpd0JCtG3QObp86uLUCcaXZODOKf8aehicco+tKXUvyDleuFPu\nhIRoW07nbs4qywHN7DIz+5KZfcXMvm5mbw3dqFxKvNpYbt2F0qq6J3XIkz/UZkwpb5IUom25nLu5\nq1PH/RNJe9z92ZJ2SrrRzJ4bslG57E/QRlBNucfWlH4n+2YhT/6QF+CUA1mItuVy7uauMlXi7i7p\nsbUvp9f+u3j2oWGp5F+HaSOodmHo2W+itM2qkpB56JQmgTcL1bYczt3c1cpxm9mUpEVJvyjpfe5+\nf59j9kraK0nbt29vso3JaiOopla2F0rMkz30BTjlQBaibSmXP5ai1pJ3dz/r7jslPUXS9Wb2jD7H\nHHT3nrv35ubmmm5nktoYBjP0DC/lPHRu2Ga3HSNVlbj7spndI+lGSQ+GaVI+2hoGp9JjK7Un1ZVR\nTRtSLn8sSWXgNrM5SStrQXtG0oskvTN4yzKRSlANreSyxJTz0LnpwmR6Cmx17nHIAWbPkvQhSVNa\nTa183N3fNuxneldc4QvXXddYIxHfA99e1k/PXLxI5tJLpvSc7bMRWoQU8TkZn33+84vu3qtzbJ2q\nkq9K2jVxq5C1fifjsMfRTdufOKNvnvyxzm3oEG4x0/YnMl/QpDArJ3fskD73uaGHlJovLdWf7j/c\nt4JmfnZG9+7bE6FFzeLz2IwnSfpin7/l9fwtq5nVPjTKkveS86WlKnkCj89js7oy7xNTlDvgdGEZ\nd2kGlSVKCrJUvE18HpGbKD3uWDPPDIcns7knVUpPlUoI5CZK4G5rGffGQD17+bQe+78zWjm3OmnS\ndpAp8aJRSs1uF7YVQFmipEraWHG4eQXX/55aOR+017U1HC51NVkpPdWUN4IC+onS425jwUOdzfml\ndoJMKT3TzUrpqaa8AKdqpJbiSC7FNpUm2o0UQs881w3IIdMz6x/a0D3TWCdKSZUmKVZCVM0hpDjH\nkGKbShQlVdKGOgE5dHpm/UO7bWZ67DaO+5xtpGHYACusqmqXFKthUmxTiZK8dVkT+vUGp6dMWy+9\nRD88vdJaeub0ylldNr1FM9NTQXqmsdMwKfZUUzbK6KhqpJbiHEOKbSpRK4E7xlA+Rt5y2I1S3/3K\nnUHaUudEIeeYhlHTCFVzCCnOMaTYphhCn3PBA3fMnFfbvcFhH9pQbak6Ucg5pmPU0VHVHEKKcwwp\ntqltbZxzwXPcXcp5xSgrq3rOLv392zTOzYVHTSNUzSGkOMeQYpva1sY5F7zH3aWcV4z0zObnnL18\nWu7S6z92VAcOnejbG5fS/PvnktIZt0c1ThqhaqSW4hxDim1qUxsxL3jg7lrOK8aHdv05+wUUU/87\nO0/y9w8RYHNK6Yw7IUwaoRvaiHnBUyWTpg/GGZJ2Vb+A4pI2bxY5SbAIVX6YU0pn3B4VaYRuaCNl\nGrzHPUn6IHYvLJeh+7pBgcO1GiSaeB2hyg9zSqlN0qPqehqhC9pImbZSDjjuhzVmjXLsi8Y4BgWU\nJm92ECrA5pRSI+WBKqEv0EmvnIzZC8tp6L6ujSHaoEA6aYDNaaMnUh6ILemVkzF7YTkN3de1MUQL\n1duMUZEzSSqMlAdiSjpwxxyS5jR03yh0QAkZYNsMhjmmwoB15t6vWGwyvV7PFxYWGvldbUwQ9nsO\nSX0vGr953bzuOX4ymwnLrhv0+dld+M2PkR8zW3T3Xq1jUw/coW3ueUmrAXr9foobT/oXXDun2xeX\nLjh2vU56niCenGHv7es/drRvfbtJ+o/9L2mtjcC6UQJ30qmSNgybhLx3354LAvHu/Yf71klLDLVT\nNOy9zTUVBkiJV5W0YZRJyKqJydSrTrpm2HubUxULsFnnA/co5W11emMpV510zbD3lpI+5CxIquT4\n9x/VNfvuHnmVZOq33+p37GYMtdNR9d5S0odcVQZuM7ta0oclPVmrKd2D7v7eYT+zcvbcBftYSMPz\nvrH37JbqlbdtPLbfBk4MtdOS8k2AgUlUVpWY2ZWSrnT3B8zsCkmLkm5294cG/czjrnyaX/n77zn/\ndVWJ1SilWSntHxKrLSn9DQA0o9GqEnf/nqTvrf37UTM7Jmle0sDAvVlV3nfYJNLGIHXZ9BadXjl3\n/vuxKzliDLVZOAJgpMlJM3uqpF2S7u/zvb1mtmBmC2dP/fCC71XlfQd9f9vM9AVbiG4M2uu6VsmR\n4x4qAJpVO3Cb2eMl3S7pde7+o83fd/eD7t5z997U5dvOP14n7zuoNMtMQycC13WpkiPHPVQANKtW\n4Dazaa0G7dvc/Y6q46entoxUYjWoNGv51Eqd5nWqkiPU7nxN4uYXQFh1qkpM0gckHXP3d9X5pdf+\n/BVa6LNseNikWr988bB7Jp5vnzTS3XRyn9RLfS9ocvBAeHV63Lsl/Z6kPWZ2dO2/m0Z9onFuedUv\nhbKRSXr1c7ePdDedpm+51bbUF46kloOn948S1akq+aIuvm3hyMa5m83mOtxtM9Myk5ZPrYzcY455\nN52mpbxwJKUcPL1/lKq1TaYmucFqEyfZOM8/bmqlhJTMuFLavKmkizWwUWt7lcSeVBv1+cdNrZSS\nkhlXSps3pdT7l0jboDmtBe7YJ/Sozz9urrbrOd6UcvCxOwsbdf2Cjma1liqJvW/EqM8/bm8tpV5e\nrBxvKjn4lCpwSNugSa3eSCH2CT3K84+bqyXHm466F+s25iRSuqAjf52/A84g4/bWUurlESyqL9Zt\njUpSuqAjf52/kcIg4+ZqyfHmpa05idhzPCgLPe4hxk3txE4JrUup95+qtkYlsed4UBYCd8EIFtXa\nTGGkckFH/gjchSNYDMeoBDkicKPTGJUgRwTuDsl9KX6o9jMqQW4I3B2R+4ZLubcfaBLlgB2R2lL8\nUeXefqBJBO6OyH0xTu7tB5pEqqQjJi17i50fZ+Uh8DP0uDtikpV7KexsV8LKQ7Z1RVPocXfEsLK3\nqt50CptV5V62x+QqmkTg7pB+ZW91Akoq+eWcy/ZSuPihHKRKOq5OtQabVU0ulYsfykDg7rg6AaWE\n/HJsXPzQJAJ3x9UJKCltVZsrLn5oEjnujqu7yVLO+eUU5D65irR0InDHrkFOGQGlPVz80JTiAzdl\nWNUIKEBeis9xs8cFgNIUH7gpwwJQmsrAbWYfNLNHzOzBNhrUNMqwAJSmTo/77yXdGLgdwVCGBaA0\nlZOT7v4FM3tq+KaEQdUEgNIUX1UiUTUBoCyNBW4z2ytpryRt3769qV+LEVGzDpSvsaoSdz/o7j13\n783NzTX1azGCFPbNBhBe8eWAXULNOtANdcoBPyrp3yTtMLOHzeyPwjcL46BmHeiGOlUlr2qjIZgc\n92UEuoFUSQCx7i1IzTrQDZ0oB2xTzE2tqFkHuiGZwD1uGVtq5W+x7y1IzTpQviQC97i91BS3bGWC\nEEBoSeS4xy1jS7H8jU2tAISWROAet5eaYu+WCUIAoSURuMftpabYu+XGugBCSyLHXfeGtU39XGhM\nEAIIKYnAPW4ZG+VvALrI3L3xX9rr9XxhYaHx3wsApTKzRXfv1Tk2iRw3AKA+AjcAZIbADQCZIXAD\nQGYI3ACQGQI3AGQmiTruFKS2yyAADELgVpq7DALAIKRKlOYugwAwCIFbae4yCACDELiV5i6DADAI\ngVvsoQ0gL0xOil0GAeSFwL2GPbQB5IJUCQBkhsANAJkhcANAZgjcAJCZWoHbzG40sxNm9g0z2xe6\nUQCAwSoDt5lNSXqfpF+X9HRJrzKzp4duGACgvzo97uslfcPdv+nuP5X0j5JeHrZZAIBB6tRxz0v6\nzoavH5b0y5sPMrO9kvauffkTM3tw8uYl6UmSfhC7EQHx+vLG68tX7aXajS3AcfeDkg5Kkpkt1L3N\nfG5Kfm0Sry93vL58mdlC3WPrpEqWJF294eunrD0GAIigTuD+sqSnmdk1ZnappN+R9E9hmwUAGKQy\nVeLuZ8zstZIOSZqS9EF3/3rFjx1sonGJKvm1Sby+3PH68lX7tZm7h2wIAKBhrJwEgMwQuAEgM0EC\nt5n9lZl91cyOmtmnzeyqEM8Ti5kdMLPja6/xTjObjd2mJpnZb5vZ183snJkVUXpV+rYNZvZBM3uk\nxPUTZna1md1jZg+tfS5vid2mJpnZZWb2JTP7ytrre2vlz4TIcZvZE9z9R2v//hNJT3f31zT+RJGY\n2YslHV6buH2nJLn7n0VuVmPM7JcknZP0fklvcPfa9aUpWtu24d8lvUirC8i+LOlV7v5Q1IY1yMx+\nVdJjkj7s7s+I3Z4mmdmVkq509wfM7ApJi5JuLuX9MzOTtNXdHzOzaUlflHSLu9836GeC9LjXg/aa\nrZKKmgF190+7+5m1L+/Tam17Mdz9mLufiN2OBhW/bYO7f0HS/8RuRwju/j13f2Dt349KOqbVFd1F\n8FWPrX05vfbf0JgZLMdtZm83s+9IerWkvwz1PAn4Q0n/ErsRGKrftg3FnPhdYmZPlbRL0v1xW9Is\nM5sys6OSHpH0GXcf+vrGDtxm9lkze7DPfy+XJHd/s7tfLek2Sa8d93liqXp9a8e8WdIZrb7GrNR5\nfUBKzOzxkm6X9LpNo/rsuftZd9+p1dH79WY2NN019l4l7v5rNQ+9TdInJb1l3OeKoer1mdkfSHqp\npBd6hsXwI7x/JWDbhsyt5X5vl3Sbu98Ruz2huPuymd0j6UZJAyeaQ1WVPG3Dly+XdDzE88RiZjdK\neqOkl7n7qdjtQSW2bcjY2uTdByQdc/d3xW5P08xsbr0yzcxmtDqJPjRmhqoquV2rWxSek/Sfkl7j\n7sX0cMzsG5IeJ+m/1x66r7Cqmd+Q9DeS5iQtSzrq7jfEbdVkzOwmSe/Rz7ZteHvkJjXKzD4q6fla\n3fb0vyS9xd0/ELVRDTGz50n6V0lf02pMkaQ/d/dPxmtVc8zsWZI+pNXP5hZJH3f3tw39mQxH+QDQ\naaycBIDMELgBIDMEbgDIDIEbADJD4AaAzBC4ASAzBG4AyMz/A5ETtBHU3uAjAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x114955d68>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(lasso3_reg)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
